"""
base.py基类文件内容：主要是封装元素对象(隐式等待.until)和输入方法
1.有自动化测试框架的实施公司，基类文件基本已经封装好，不需要编写，而且不能随意改动
2.如果没有自动化测试框架，则需要自行编写
"""
from selenium.webdriver.support.wait import WebDriverWait
from utils import UtileDriver


class AdminBasePage:
    # 封装查找元素的方法，输入方法
    def __init__(self):
        self.driver=UtileDriver.get_admin_driver()
    # 创建初始化方法，在初始化方法中
    # 公用的元素定位方法
    # 原因：希望通过显示等待的方法来定位元素，解决元素定位对于页面加载的依赖
    def find_elem(self,location):
        """
        对location是有要求的，要求location的值为元组或者列表，且有2个元素
        第一个值为定位方式，第二个值为定位方式所在的
        :param location:
        :return:
        """
        try:
            # 驱动对象，元素定位的方法
            # 要定位元素就必须通过元素的信息来绝对定位方式和值
            # 显示等待定位元素
            element=WebDriverWait(self.driver,10,1).until(lambda x:x.find_element(*location))
            # 返回元素对象
            return element
        except Exception as e:
            print("定位的元素找不到")

    # 定义公用的输入方法
    def input_elem(self,elem,text):
        """
        :param elem: 元素对象，在调用的时候必须要传入，即可以直接使用变量
        :param text:输入的文本信息
        :return:
        """
        # 文本输入之前首先要清楚文本框的内容
        elem.clear()
        # 文本框进行输入
        elem.send_keys(text)

